package com.xxwu.springblogsystem.utils;

import org.springframework.util.DigestUtils;

import java.util.UUID;

public class SecretyUtils {

    /**
     *对密码进行加密
     *获取一个随机盐值
     *使用MD5对（盐值+密码）进行加密 = 最终密码
     *将盐值+最终密码存储在数据库中，因为要存储下这个随机盐值，用于后期校验密码
     * @param password
     * @return
     */
    public static String encrypt(String password){
        //随机盐值
        String salt = UUID.randomUUID().toString().replace("-", "");
        //最终密码
        String finalPassword = DigestUtils.md5DigestAsHex((salt+password).getBytes());
        //将最终盐值+最终密码存储
        return salt+finalPassword;
    }

    /**
     * 解密
     * 获取用户输入的密码
     * 将密码通过加密流程
     * 最终得到的结果与数据库中存储的密码进行比对
     * @param password
     * @param sqlPassword
     * @return
     */
    public static boolean verify(String password, String sqlPassword){
        if(sqlPassword == null || sqlPassword.length() != 64){
            return false;
        }
        //截取盐值
        String salt = sqlPassword.substring(0,32);
        String finalPassword = DigestUtils.md5DigestAsHex((salt+password).getBytes());
        return (salt+finalPassword).equals(sqlPassword);
    }
}
